package com.urea.system.service;

import com.alibaba.fastjson2.JSONObject;
import com.urea.common.core.domain.AjaxResult;
import com.urea.system.domain.vo.OrderVo;
import com.urea.system.domain.vo.PayVo;

import java.util.Map;

/**
 * 类描述:
 *
 * @author fangXu
 * @version 1.0
 * @date 2023/8/22 17:24
 */
public interface IPayService {


    /**
     * 发起预支付申请
     * @param vo 订单信息
     * @return 结果信息
     */
    JSONObject payToWx(OrderVo vo);


    /**
     * 接收支付成功通知
     * @param json 通知信息
     * @return 响应信息
     */
    JSONObject paySuccess(JSONObject json);


    /**
     * 商户号与小程序绑定
     * @param merchantId 商户号
     * @param appid 小程序id
     */
    void bindWxConf(String merchantId,String appid);

    /**
     * 商户延时结算
     * @param merchantId
     * @param delayedSettleType 延迟结算：0-关闭，1-开启；
     */
    void delayed(String merchantId,String delayedSettleType);

    /**
     * 查询微信订单支付状态
     * @param orderNo 订单id
     * @return 响应信息
     */
    JSONObject queryOrderStatusToWx(String orderNo);

    /**
     * 充值
     * @param vo 充值信息
     * @return 结果
     */
    AjaxResult recharge(PayVo vo);

    /**
     * 加注
     * @param vo 加注信息
     * @return 结果
     */
    AjaxResult pay(PayVo vo);

    /**
     * 退款
     * @param vo 退款信息
     * @return 结果
     */
    AjaxResult unifyRefund(PayVo vo);

    /**
     * 退款成功 回调通知
     * @param json 信息
     * @return 结果
     */
    JSONObject unifyRefundSuccess(JSONObject json);

    /**
     * 查询微信订单退款状态
     * @param orderNo 订单id
     * @return 响应信息
     */
    JSONObject queryRefundOrderStatusToWx(String orderNo);


    /**
     * 延迟订单解冻
     * @param orderNo 订单id
     * @return 响应信息
     */
    JSONObject thawApply(String orderNo);

    /**
     * 取消支付
     * @param vo 订单信息
     * @return 结果
     */
    void cancelPay(OrderVo vo);

    /**
     * 续费
     * @param vo 订单信息
     * @return 结果
     */
    AjaxResult renew(PayVo vo);
}
